package com.gopay.remote.cps.approval;

import java.util.Date;

import com.gopay.common.constants.approval.ApprovalID;
import com.gopay.common.constants.approval.TargetValue;
import com.gopay.common.constants.dts.DtsQueryStatus;
import com.gopay.common.exception.ApprovalException;

/**
 * 审批任务远程服务接口
 * DTS分布式事务一致性框架：补偿模式接口实现
 * 
 * @author MA HUAN
 * 
 */
public interface CompTaskRemoteService {

	/**
	 * 新增审批流程
	 * 
	 * @param approvalId
	 *            审批流程编号
	 * @param target
	 *            任务目标类型(1 - 订单 2 - 用户 3 - 批量)
	 * @param targetId
	 *            任务目标记录ID
	 * @param start
	 *            发起人
	 * @return
	 * @throws ApprovalException
	 */
	public int doAddTaskApproval(String tokenId, ApprovalID approvalId,
			TargetValue target, String targetId, String start)
			throws ApprovalException;

	/**
	 * 新增审批流程-补偿操作
	 * 
	 * @return
	 * @throws ApprovalException
	 */
	public boolean doCompensateAddTaskApproval(String tokenId)
			throws ApprovalException;
	
	/**
	 * 状态自查
	 * 
	 * @param tokenId
	 * @return
	 */
	public boolean isRemoteCallDone(String tokenId, DtsQueryStatus status, Date doTime);
}
